Platform as a service (PaaS) is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an application. An example of a PaaS platform is Cloud Foundry. A customer of a PaaS need only focus on the application and data, leaving the tasks associated with building and maintaining any infrastructure below to the platform.
The integration points between a PaaS platform and the application code are well-defined for applications that are designed to run on the PaaS platform, allowing automation of development processes that used to be manual in nature. The development processes that can be automated include application scaling and new version deployment, etc.
The functionality of a PaaS platform may comprise the ability to create a snapshot, or a copy, of a customer application and data with associated application configurations, runtime settings, and other metadata at an arbitrary point in time. Such a copy, which includes all the information about the application state and data, can be replayed to recreate workloads of a historical point in time.
Although adjusting resource allocations on a PaaS platform is relatively easy with either software containers or virtual templates, determining the appropriate resources that should be reserved for an application may be a complex task. There may be a great number of possible combinations of resource configurations. A trade-off exists between performance and cost. Not reserving enough resources may lead to application performance degradation, while reserving more than enough resources may be costly to the customer. Moreover, the resource demands of the application may vary with time.
For example, one may need to answer the following questions in determining the optimal resource configurations for an application. 1) Is it better to run a 30-node cluster with less random-access memory (RAM) and less processing power (either per-node or combined) or a 10-node cluster with more RAM and more processing power, in terms of throughput as well as cost? 2) Which database service plan or key value store (e.g., Amazon S3 “Simple Storage Service”) service plan meets the desired user responsiveness while also keeping the cost low? 3) What cache hit-ratio achieves the desired balance between response time and cost? A method or system for automating the process of resource configuration optimization may bring about great cost savings and performance improvements.